package com.yizhuoyan.his.service.admin;

import com.yizhuoyan.his.ao.NoDrugChargeQueryAo;
import com.yizhuoyan.his.ao.NodrugChargeAddAo;
import com.yizhuoyan.his.ao.NodrugChargeModifyAo;
import com.yizhuoyan.his.dto.HosNodrugDto;
import com.yizhuoyan.his.entity.HosNodrugEntity;

import java.util.List;

/**
 * 非药品收费管理服务
 */
public interface NodrugChargeManageService {

    /**
     * 添加非药品收费项目
     * @param ao 非药品收费项目信息
     * @throws NullPointerException 如果ao为空
     * @throws com.yizhuoyan.his.exception.HISIllegalParameterException 如果数据不合法
     * @throws Exception
     */
    HosNodrugEntity addNodrug(NodrugChargeAddAo ao) throws Exception;

    /**
     * 修改指定的非药品收费项目
     * @param nodrugId 非药品收费项目id
     * @param ao 修改的信息
     * @throws NullPointerException 如果ao或id为空
     * @throws com.yizhuoyan.his.exception.HISIllegalParameterException 如果数据不合法
     * @throws Exception
     */
    void modifyNodrug(Long nodrugId, NodrugChargeModifyAo ao)throws Exception;

    /**
     *  删除指定的非药品收费项目
     * @param nodrugId 非药品收费项目id
     * @throws NullPointerException 如果nodrugId为空
     * @throws com.yizhuoyan.his.exception.HISIllegalParameterException 如果nodrugId不合法
     * @throws Exception
     */
    void removeNodrug(Long nodrugId)throws Exception;

    /**
     * 非药品收费项目查询
     * @param ao 查询条件
     * @return 满足条件的查询结果
     * 如果ao为空则查询全部
     * 如果无满足条件的查询结果则返回空集合
     * @throws com.yizhuoyan.his.exception.HISIllegalParameterException 如果数据不合法
     * @throws Exception
     */
    List<HosNodrugDto> queryNodrug(NoDrugChargeQueryAo ao)throws Exception;
}
